package chapter6;
/****************************************************************
 * Author：icynlau
 * Description: 梅森素数
- * Date:2021/4/6
 * ***************************************************************
 */
public class exc6_28 {
	
	public static int meisen(int p) {
		return (int)Math.pow(2, p)-1;
	}
	
	
	public static boolean isPrime(int n) {
		//是否素数
		boolean ret=true;
		
		if(n==1) {
			return false;
		}
		
		for(int i=2;i<=n/2;i++) {
			if(n%i==0) {
				return false;
				//这里有个比较值得注意的地方，
				//如果我这一步只是将ret赋值为true，不及时返回的话
				//会继续浪费很多时间进行没有意义的循环
			}
		}
		
		return ret;
	}
	
	public static void main(String[] args) {
		
		System.out.print("p                 2^p-1\n");
		System.out.print("=================\n");
		
		for(int i=1;i<31;i++) {		//从p=2开始看是否满足要求，因为p=1时不是素数
			
			if(isPrime(meisen(i+1))) {
				System.out.printf("%-8d                       %-8d\n",i+1,meisen(i+1));
			}
			
		}
		
	}

}
